/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package fr.ove.openmath.jome.behaviour;

/**
 *
 * @author Mr.Sam
 */
public interface Selectable {
    /**
    * Selects the instance.<BR>
    * In the case of an instance composed by different elements (for example trees), this 
    * method is recursive, and then selects the different elements.
    */
    public void select();
    
    /**
    * Marks the instance as selected.
    */
    public void setSelected();
    
    /**
    * Deselects the instance.<BR>
    * In the case of an instance composed by different elements (for example trees), this 
    * method is recursive, and then deselects the different elements.
    */
    public void deselect();
    
    /**
    * Marks the instance as not selected.
    */
    public void setNotSelected();
    
    /**
    * Checks if the instance is selected.
    * @returns <CODE>true</CODE> if the instance is selected. <CODE>false</CODE>
    * otherwise.
    */
    public boolean isSelected();
    
    /**
    * In the case of an instance composed by different elements (for example trees), this 
    * method checks if there are some selected elements.
    * @returns <CODE>true</CODE> if the instance has selected elements. <CODE>false</CODE>
    * otherwise.
    */
    public boolean gotSelectedElements();
}
